package math.matrix;

/**
 *
 * Fully Tested: No
 * Fully Documented: No
 * Created: 23-May-2012
 * Last Updated: 23-May-2012
 *
 * @param <T> 
 * @param <E> 
 * @author Shimu Wu
 */
public interface MatrixMapper<T, E> {
    
    public E process(int col, int row, Matrix<T> original);
    
    /*
     * Matrix<E> out = new Matrix<E>(maxY, maxX);

        int midCol, midRow;
        midCol = kernel.maxX / 2;
        midRow = kernel.maxY / 2;

        int indexCol, indexRow;
        float accumulator;
        for (int currentRow = midRow; currentRow < maxY - midRow; currentRow++) {
            for (int currentCol = midCol; currentCol < maxX - midCol; currentCol++) {
                accumulator = 0;
                indexCol = currentCol - midCol;
                indexRow = currentRow - midRow;
                for (int kernelRow = 0; kernelRow < kernel.maxY; kernelRow++) {
                    for (int kernelCol = 0; kernelCol < kernel.maxX; kernelCol++) {
                        accumulator += this.get(indexCol + kernelCol,
                                indexRow + kernelRow) * kernel.get(kernelCol, kernelRow);
                    }
                }
                out.set(currentCol, currentRow, accumulator);
            }
        }
        return out;
     */
}
